package com.cjlgb.design.upms.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.cjlgb.design.common.core.bean.ResultBean;
import com.cjlgb.design.common.mybatis.service.BaseService;
import com.cjlgb.design.upms.api.entity.SysMenu;

import java.util.Collection;

/**
 * @author WFT
 * @date 2019/7/31
 * description: 系统菜单相关业务接口
 */
public interface SysMenuService extends BaseService<SysMenu> {

    /**
     * 根据Id列表查询菜单列表
     * @param ids Id列表
     * @param type 类型：{ 1：模块，2：菜单，3：按钮, null: 全部 }
     * @return Collection<SysMenu>
     */
    default Collection<SysMenu> selectByIds(Collection<Long> ids,Integer type){
        LambdaQueryWrapper<SysMenu> wrapper = Wrappers.<SysMenu>lambdaQuery().in(SysMenu::getId, ids);
        if (null != type){
            wrapper.eq(SysMenu::getType, type);
        }
        return this.list(wrapper);
    }

    /**
     * 根据权限标识查询菜单
     * @param permission 权限标识
     * @param excludeId 排除此Id
     * @return SysMenu
     */
    default SysMenu selectByPermission(String permission,Long excludeId){
        LambdaQueryWrapper<SysMenu> wrapper = Wrappers.<SysMenu>lambdaQuery().eq(SysMenu::getPermission, permission);
        if (null != excludeId) {
            wrapper.notIn(SysMenu::getId, excludeId);
        }
        return this.getOne(wrapper);
    }

    /**
     * 创建菜单
     * @param menu 菜单信息
     * @return ResultBean
     */
    ResultBean createMenu(SysMenu menu);

    /**
     * 修改菜单
     * @param menu 菜单信息
     * @return ResultBean
     */
    ResultBean editMenu(SysMenu menu);

    /**
     * 删除菜单
     * @param id 菜单Id
     */
    void deleteById(long id);
}
